#pragma once

#include <string>
#include "SymmetricKey.h"

namespace kryptos { namespace cryptography {

class CryptoMetadata
{
public:
    CryptoMetadata();
    CryptoMetadata(const char* buffer, int len);
    virtual ~CryptoMetadata();

    void addSymmetricKeyInfo(const std::string& keyid, unsigned long long offset);

    std::vector<char> decrypt(kryptos::cryptography::SymmetricKey& sessionKey);
    std::vector<char> encrypt(kryptos::cryptography::SymmetricKey& sessionKey);
    std::vector<char> bytes();

    std::vector<std::pair<std::string, unsigned long long> > keys();

private:

    std::vector<std::pair<std::string, unsigned long long> > m_symkeys;

    std::vector<char>          m_metadataBytes;
    unsigned long long         m_metadataBytesCurrentIndex;
};

}}
